﻿<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Liquidacion.aspx.cs" MasterPageFile="MasterPage.Master" Inherits="Web.Pages.Liquidacion" %>

<asp:Content ID="mainContent" ContentPlaceHolderID="MainContent" runat="Server" >

    <!-- Estilos -->
    <style type="text/css" >
        #dialogEnviarReclamo input,
        #dialogEnviarReclamo textarea
        {
            width: 98%;
        }
        #dialogEnviarReclamo label
        {
            font-weight: bold;
        }
    </style>
    <!-- Fin de [Estilos] -->

    <!-- $(document).ready -->  
    <script type="text/javascript" >
        
        var controles = { General: {}, Tablas: { Liquidaciones: {} }, Dialogos: { EnviarReclamo: {} } };

        $(document).ready(function()
        {            
            procesarParametros();
            configurarControles();
            cargarPagina_Liquidacion();
        });
        function procesarParametros()
        {
            Framework.Page.Parameters.parseQueryString();
        }
        function configurarControles()
        {
            /* General */
            controles.General =
            {
                Proyecto    : "<%= selLiquidacion_Proyecto.ClientID %>",
                Guion       : "<%= selLiquidacion_Guion.ClientID %>"
            };
            /* Tablas */
            controles.Tablas.Liquidaciones =
            {
                Id: "tblLiquidaciones",
                Initialized: false,
                Initialize: inicializarGrillaLiquidacionesGuion
            };
            /* Dialogos */
            controles.Dialogos.Reclamo =
            {
                Id          : "dialogEnviarReclamo",
                Title       : "Generar Reclamo",
                IdPago      : "txtDialogoReclamo_IdPago",
                IdGuion     : "txtDialogoReclamo_IdGuion",
                Guion       : "txtDialogoReclamo_Guion",
                Asunto      : "txtDialogoReclamo_Asunto",
                Descripcion : "txtDialogoReclamo_Descripcion",
                btnEnviar   : "btnEnviarReclamo",            
            }            
        }
        function cargarPagina_Liquidacion()
        {
            Site.Messages.showLoadingMessage();

            Site.Page.setTitle("Liquidación");

            Helpers.MultiSelectHelper.configure("#" + controles.General.Proyecto, false, false, { "width": "100%" } );
            Helpers.MultiSelectHelper.configure("#" + controles.General.Guion, false, false, { "width": "100%" } );
            Helpers.MultiSelectHelper.bindOnChange("#" + controles.General.Proyecto, onProyecto_Change);
            Helpers.MultiSelectHelper.bindOnChange("#" + controles.General.Guion, onGuion_Change);

            if ( !validarPermisosAdmin(_CurrentUser.Tipo) )
                Framework.Page.Parameters.idProveedor = _CurrentUser.Id;

            if ( !isEmpty(Framework.Page.Parameters.idGuion) )
                refrescarGrilla();

            inicializarDialogoReclamo();

            Site.Messages.hideLoadingMessage();
        }
        function onProyecto_Change(seleccionado, valor, texto) 
        {
            limpiarGrilla();
            if (seleccionado == true)
            {
                var parametros = { idProyecto : valor }
                var jsonParams = JSON.stringify(parametros);
                Site.Messages.showLoadingMessage();
                Helpers.AJAXHelper.invoke("obtenerGuiones", jsonParams, obtenerGuiones_Response);
            }
        }
        function obtenerGuiones_Response(datos)
        {
            Site.Messages.hideLoadingMessage();
            var respuestaInfo = jQuery.parseJSON(datos.d);
            if (respuestaInfo.Resultado)
            {
                var guionesInfo = respuestaInfo.Valor;
                var options = Helpers.SelectListHelper.formatForSelectList(guionesInfo, "Id", "Texto");
                Helpers.SelectListHelper.fillSelectList(controles.General.Guion, options, null, true);
                Helpers.MultiSelectHelper.configure("#" + controles.General.Guion, false);
                Helpers.MultiSelectHelper.bindOnChange("#" + controles.General.Guion, onGuion_Change);
            }
            else
            {
                mostrarNotificacion(_notifications.error, respuestaInfo.Mensaje, true);
            }
        }
        function onGuion_Change(seleccionado, valor, texto)
        {
            //if (!controles.Tablas.Liquidaciones.Initialized)
            //{
            //    controles.Tablas.Liquidaciones.Initialize.call();
            //    controles.Tablas.Liquidaciones.Initialized = true;
            //}

            if (seleccionado == true)
                filtrarLiquidaciones(valor);
        }
        function filtrarLiquidaciones(idGuion)
        {
            Framework.Page.Parameters.idGuion = idGuion;
            //if (isEmpty(Framework.Page.Parameters.idGuion))
            //    Framework.Page.Parameters.idGuion = idGuion;
            //else
            //    Framework.Page.Parameters.idGuion += ',' +  idGuion;
            refrescarGrilla();
        }
    </script>
    <!-- Fin de [$(document).ready] -->
    
    <!-- Grilla Liquidaciones Guion -->
    <script type="text/javascript" >
        function inicializarGrillaLiquidacionesGuion()
        {
            var visible = false;
            if ( isEmpty(Framework.Page.Parameters.idProveedor) )
                visible = true;

	        var colModel =
            [
                { name: 'Id',               index: 'Id',                    label: 'Id Pago',           align: 'center', hidden: true,      search: false,  editable: false, sortable: false,   dataType: 'Int32' },
                { name: 'IdGuion',          index: 'Guion.Id',              label: 'Id Guión',          align: 'center', hidden: true,      search: false,  editable: false, sortable: false,   dataType: 'Int32' },
                { name: 'Reclamar',         index: 'Reclamar',              label: 'Reclamar',          align: 'center', hidden: visible,   search: false,  editable: false, sortable: false,   dataType: 'String', width: 80 },
                { name: 'Episodio',         index: 'Guion.Episodio',        label: 'Ep.',               align: 'center', hidden: false,     search: true,   editable: false, sortable: true,    dataType: 'Int32',  width: 50, searchoptions: { sopt: ['eq', 'ne', 'gt', 'lt' ] } },
                { name: 'Titulo',           index: 'Guion.Titulo',          label: 'Título',            align: 'center', hidden: false,     search: true,   editable: false, sortable: true,    dataType: 'String', width: 300, searchoptions: { sopt: ['eq', 'ne', 'bw','cn' ] } },
                { name: 'IdProveedor',      index: 'Proveedor.Id',          label: 'Id Proveedor',      align: 'center', hidden: true,      search: false,  editable: false, sortable: false,   dataType: 'Int32'   },
                { name: 'TipoProveedor',    index: 'Proveedor.Tipo.Nombre', label: 'Tipo Proveedor',    align: 'center', hidden: true,      search: false,  editable: false, sortable: false,   dataType: 'String'  },
                { name: 'Proveedor',        index: 'Proveedor.Apellido',    label: 'Proveedor',         align: 'center', hidden: !visible,  search: true,   editable: false, sortable: true,    dataType: 'String', width: 150, searchoptions: { sopt: ['eq', 'ne', 'bw','cn' ] } },
                { name: 'IdProveedorRol',   index: 'Proveedor.IdRol',       label: 'Id Rol Proveedor',  align: 'center', hidden: true,      search: false,  editable: false, sortable: false,   dataType: 'Int32'   },
                { name: 'RolProveedor',     index: 'ProveedorRol',          label: 'Rol',               align: 'center', hidden: false,     search: false,  editable: false, sortable: true,    dataType: 'String', width: 100, formatter: jqGridFormatter_CategoriaUsuario  },
                { name: 'Fecha',            index: 'Fecha',                 label: 'Fecha',             align: 'center', hidden: false,     search: true,   editable: false, sortable: true,    dataType: 'DateTime', width: 100, searchoptions: { sopt: ['eq', 'ne', 'gt', 'lt' ], dataInit: datePick, attr: { title:'Seleccionar Fecha' } }, formatter: 'date', formatoptions: { srcformat: 'Y-m-d', newformat: 'd/m/Y' } },
                { name: 'Loops',            index: 'Loops',                 label: 'Loops',             align: 'center', hidden: false,     search: false,  editable: false, sortable: true,    dataType: 'Int32',  width: 100 },
                { name: 'Importe',          index: 'ImporteTotal',          label: 'Importe',           align: 'center', hidden: false,     search: false,  editable: false, sortable: true,    dataType: 'Double', width: 100, formatter: 'currency', formatoptions: { decimalSeparator: ",", thousandsSeparator: ".", decimalPlaces: 2, prefix: "$ ", suffix: "", defaultValue: "0.00" } }
            ];

            var gridOpts                            = Helpers.jqGridHelper.createGridObject();
                gridOpts.IdGrid                     = "{0}_Grid".format(controles.Tablas.Liquidaciones.Id);
                gridOpts.IdPager                    = "{0}_GridPager".format(controles.Tablas.Liquidaciones.Id);
                gridOpts.IdColModel                 = "{0}_GridColModel".format(controles.Tablas.Liquidaciones.Id);
                gridOpts.ColModel                   = colModel;
                gridOpts.Width                      = _GridInfo.Defaults.Width;
                gridOpts.Height                     = _GridInfo.Defaults.Height;
                gridOpts.Title                      = setGridTitle("Liquidaciones");
                gridOpts.DefaultSortColumn          = "Fecha"; //Guion.Episodio
                gridOpts.DefaultSortOrder           = "desc"; //asc
                gridOpts.PageSizeList               = [5, 10, 20, 30, 50, 100];
                gridOpts.DefaultPageSize            = _GridInfo.Defaults.PageSize;
            /* jqGrid Properties */
                gridOpts.AutoWidth                  = false;
                gridOpts.ShrinkToFit                = false;
                gridOpts.LoadFilters                = grillaLiquidacionesGuion_LoadFilters;
                gridOpts.LoadFiltersOnSearch        = true;
                gridOpts.OnLoadComplete             = grillaLiquidacionesGuion_OnLoadComplete;
                gridOpts.EditMode                   = Helpers.jqGridHelper.EditMode.Modal;
            /* jqGrid Instance Urls & Params */
                gridOpts.UrlGet                     = "obtenerPagosGuion";
            /* jqGrid Pager Buttons */
                gridOpts.ShowSearch                 = true;
                gridOpts.ShowRefresh                = false;
                
                gridOpts.LoadOnInitialization       = false;

            Helpers.jqGridHelper.setGridOpts(gridOpts);
        }
        function grillaLiquidacionesGuion_LoadFilters()
        {
            var rules = [];

            if ( !isEmpty(Framework.Page.Parameters.idGuion) )
            {
                var condicionGuion =
                    {
                        condition: "AND",
                        set:
                        [
                            { match: "AND", field: "Guion.Id", op: "eq", data: Framework.Page.Parameters.idGuion }
                            //{ match: "AND", field: "Guion.Id", op: "in", data: Framework.Page.Parameters.idGuion }
                        ]
                    };
                rules.push( condicionGuion );
            }
            
            if ( !isEmpty(Framework.Page.Parameters.idProveedor) )
            {
                var condicionGuion =
                    {
                        condition: "AND",
                        set:
                        [
                            { match: "AND", field: "Proveedor.Id", op: "eq", data: Framework.Page.Parameters.idProveedor }
                        ]
                    };
                rules.push(condicionGuion);
            }
                        
            return JSON.stringify(rules);
        }
        datePick = function(elem)
        {
           jQuery(elem).datepicker();
           //jQuery(elem).datepicker( { minDate: -20, maxDate: "+1M +10D" } );
        }
        function grillaLiquidacionesGuion_OnLoadComplete()
        {
            grillaLiquidacionesGuion_AgregarHandlersBotones();
        }
        function grillaLiquidacionesGuion_AgregarHandlersBotones()
        {
            $(".btnGenerarReclamoGuion").click
            (
                function()
                {
                    var btn = $(this);
                    var col = btn.parent();
                    var row = col.parent();
                    var rowId = row.attr("id");
                    generarReclamoGuion(rowId, "{0}_Grid".format(controles.Tablas.Liquidaciones.Id));
                }
            );

            $(".btnEditarGuion").click
            (
                function()
                {
                    var idGuion = $(this).attr("id").replace("btnEditarGuion_", "");
                    editarGuion( idGuion );
                }
            );
            mostrarTooltip(".btnEditarGuion", "Ver detalle del Guión");

            $(".btnVerProveedor").click
            (
                function()
                {
                    var idProveedor = $(this).attr("id").replace("btnVerProveedor_", "");
                    editarUsuario( idProveedor );
                }
            );
            mostrarTooltip(".btnVerProveedor", "Ver detalle del Proveedor");
        }
        function refrescarGrilla()
        {
            if (!controles.Tablas.Liquidaciones.Initialized)
            {
                controles.Tablas.Liquidaciones.Initialize.call();
                controles.Tablas.Liquidaciones.Initialized = true;
            }

            Helpers.jqGridHelper.reloadGrid("{0}_Grid".format(controles.Tablas.Liquidaciones.Id));
        }
        function limpiarGrilla()
        {
            Helpers.jqGridHelper.clearGridData("{0}_Grid".format(controles.Tablas.Liquidaciones.Id));            
        }
    </script>
    <!-- Fin de [Grilla Liquidaciones Guion] -->

    <!-- Diálogo Reclamos -->
    <script type="text/javascript" >
        function generarReclamoGuion(rowId, idTabla)
        {
            abrirDialogoReclamo(rowId, idTabla);
        }
        function inicializarDialogoReclamo()
        {
            var dialogReclamoOpts =
            {
                title:  controles.Dialogos.Reclamo.Title.toUpperCase(),
                width:  600,
                height: 420
            };
            Helpers.DialogHelper.initializeDialog( controles.Dialogos.Reclamo.Id, dialogReclamoOpts );
            
            $("#{0}".format(controles.Dialogos.Reclamo.btnEnviar)).click(function () { enviarReclamo(); });
        }
        function abrirDialogoReclamo(rowId, idTabla)
        {
            var titulo = Helpers.jqGridHelper.getGridRowCellValue(idTabla, rowId, "Titulo");
                titulo = $(titulo).text();
            var episodio = Helpers.jqGridHelper.getGridRowCellValue(idTabla, rowId, "Episodio");
            var idPago = Helpers.jqGridHelper.getGridRowCellValue(idTabla, rowId, "IdPago");
            var idGuion = Helpers.jqGridHelper.getGridRowCellValue(idTabla, rowId, "IdGuion");

            $("#{0}".format(controles.Dialogos.Reclamo.IdPago)).val(idPago);
            $("#{0}".format(controles.Dialogos.Reclamo.IdGuion)).val(idGuion);
            $("#{0}".format(controles.Dialogos.Reclamo.Guion)).val(titulo + " - Ep. " + episodio);
            $("#{0}".format(controles.Dialogos.Reclamo.Asunto)).val("Reclamo de " + _CurrentUser.Nombre + " " + _CurrentUser.Apellido);
            $("#{0}".format(controles.Dialogos.Reclamo.Descripcion)).val("");
            
            Helpers.DialogHelper.openDialog(controles.Dialogos.Reclamo.Id);
        }
        function cerrarDialogoReclamo()
        {
            Helpers.DialogHelper.closeDialog( controles.Dialogos.Reclamo.Id );
        }
        function validarEnviarReclamo(parametros)
        {
            var errores = [];
            
            validarDatosReclamo(parametros, errores);

            if ( errores.length > 0 )
                return false;
            else
                return true;
        }
        function validarDatosReclamo(parametros, errores)
        {
            if ( isEmpty(parametros.descripcion) )
                registrarError( $("#{0}".format(controles.Dialogos.Reclamo.Descripcion)), errores );
        }
        function enviarReclamo()
        {
            var parametros =
            {
                idPago      : $("#{0}".format(controles.Dialogos.Reclamo.IdPago)).val(),
                idEmisor    : _CurrentUser.Id,
                descripcion : $("#{0}".format(controles.Dialogos.Reclamo.Descripcion)).val()
            };
  
            if ( !validarEnviarReclamo(parametros) )
                return;

            cerrarDialogoReclamo();

            Site.Messages.showLoadingMessage("Enviando reclamo.. Por favor, espere");

            Helpers.AJAXHelper.invoke("enviarReclamo", JSON.stringify(parametros).replace(/'/g, "\\'"), enviarReclamo_Respuesta, null);
        }
        function enviarReclamo_Respuesta(datos)
        {
            Site.Messages.hideLoadingMessage();

            var tipoNotificacion = null;
            var forzarCierre = false;

            var respuestaInfo = jQuery.parseJSON(datos.d);
            if (respuestaInfo.Resultado)
            {
                //var reclamoInfo = respuestaInfo.Valor;
                tipoNotificacion = _notifications.success;
                forzarCierre = false;
            }
            else
            {
                tipoNotificacion = _notifications.error;
                forzarCierre = true;
            }

            mostrarNotificacion(tipoNotificacion, respuestaInfo.Mensaje, forzarCierre);
        }
    </script>
    <!-- Fin de [Diálogo Reclamos] -->

    <!--HTML-->
    <div id="content" style="margin:0 auto; width:90%;" >

        <br />
        
        <!-- Filtro -->
        <div style="width:900px" >
            <table width="100%" border="1" cellpadding="0" cellspacing="0" class="default" >
                <colgroup>
                    <col width="11%" />
                    <col width="35%" />
                    <col width="9%" />
                    <col width="45%" />
                </colgroup>
                <tr>
                    <td class="indent" >
                        <label>Proyecto:</label>
                    </td>
                    <td>
                        <select id="selLiquidacion_Proyecto" multiple="true" runat="server" ></select>
                    </td>
                    
                    <td class="indent" >
                        <label>Guión:</label>
                    </td>
                    <td>
                        <select id="selLiquidacion_Guion" multiple="true" runat="server" ></select>
                    </td>
                </tr>
            </table>
        </div>
        
        <br /><br /><br />

        <!-- Grilla Liquidaciones Guión -->
        <div class="jqGridContainer" >
            <table id="tblLiquidaciones_Grid" ></table>
            <div id="tblLiquidaciones_GridPager" ></div>
            <input type="hidden" id="tblLiquidaciones_GridColModel" />      
        </div>

        <br />

        <!-- Diálogo Reclamos -->
        <div id="dialogEnviarReclamo" style="display:none" >
            <input id="txtDialogoReclamo_IdPago" type="text" style="display:none" />
            <input id="txtDialogoReclamo_IdGuion" type="text" style="display:none" />
            <label>Asunto:</label><br />
            <input id="txtDialogoReclamo_Asunto" type="text" readonly="readonly" class="disabled" /><br />
            <br />
            <label>Guión:</label><br />
            <input id="txtDialogoReclamo_Guion" type="text" readonly="readonly" class="disabled" /><br />
            <br />
            <label>Mensaje:</label><br />
            <textarea id="txtDialogoReclamo_Descripcion" rows="10" cols="1" ></textarea><br />
            <br />
            <div style="float:right" >
                <div id="btnEnviarReclamo" class="botonAccion" >
                    <img src="Images/16x16/email.png" alt="Enviar" />
                    <label>Enviar</label>
                </div>
            </div>
        </div>

    </div>

</asp:Content>